"""LLM Plays Pokemon use_emulator工具模块"""

import logging
from typing import Dict, Any, List, Optional

logger = logging.getLogger(__name__)


class UseEmulatorTool:
    """use_emulator工具类，提供按钮指令发送到游戏模拟器的功能"""
    
    def __init__(self, shared_state, emulator_tool):
        """初始化use_emulator工具
        
        Args:
            shared_state: 线程间共享状态
            emulator_tool: 模拟器工具实例
        """
        self.shared_state = shared_state
        self.emulator = emulator_tool
    
    def execute(self, buttons: List[str], pause_ms: Optional[int] = None) -> Dict[str, Any]:
        """执行按钮序列
        
        Args:
            buttons: 按钮序列，如["A", "B", "Up"]
            pause_ms: 执行后暂停的毫秒数（可选）
            
        Returns:
            执行结果，包含截图、叠加层、内存数据和格式化信息
        """
        logger.info(f"use_emulator工具执行按钮序列: {buttons}")
        
        # 将按钮操作添加到共享队列
        with self.shared_state.lock:
            self.shared_state.button_queue.append(buttons)
        
        # 返回成功消息
        # 注意：实际的截图、叠加层等信息会在游戏主循环中处理并更新到shared_state中
        return {
            "success": True,
            "message": f"按钮 {buttons} 已添加到队列",
            "screenshot": self.shared_state.screenshot_path,  # 返回最新的截图路径
            "overlay": None,  # 当前实现中没有叠加层
            "memory_data": None,  # 当前实现中没有内存数据
            "formatted_data": None,  # 当前实现中没有格式化数据
            "reminders": [
                "使用方向键移动角色",
                "按A键与物体或NPC交互",
                "按B键取消或快速移动",
                "按Start键打开菜单"
            ]
        }